Bir süredir JSON ile uğraşıyorum, sadece metin olarak dışarı atıyorum ve kimseye zarar vermedi (bildiğim kadarıyla), ancak işleri düzgün yapmaya başlamak istiyorum. JSON içerik türü için pek çok sözde "standart" gördüm: application / json application / x-javascript text / javascript text / x-javascript text / x-json Ama hangisi doğru mu, yoksa en iyisi mi? Aralarında değişen güvenlik ve tarayıcı desteği sorunları olduğunu anlıyorum. Benzer bir soru olduğunu biliyorum, JSON bir REST API tarafından döndürülüyorsa hangi MIME türü ?, ama biraz daha hedeflenmiş bir cevap istiyorum.
2020-12-07 21:18:28
1 2 Sonraki JSON metni için: application / json JSON metni için MIME ortam türü application / json'dur. Varsayılan kodlama UTF-8'dir. (Kaynak: RFC 4627). Geri arama ile JSONP (çalıştırılabilir JavaScript) için: application / javascript İşte ilgili yorumlarda bahsedilen bazı blog gönderileri: JSON için neden text / html kullanmamalısınız? Internet Explorer bazen application / json ile sorun yaşar Mimetiplerin oldukça eksiksiz bir listesi ve bunların ne için kullanılacağı Aşağıdaki @ gnrfan cevabından IANA'daki resmi mime türü listesi | IANA, JSON için resmi MIME Tipini application / json olarak kaydetti. Neden text / json olmadığı sorulduğunda Crockford, JSON'un gerçekten JavaScript veya metin olmadığını ve ayrıca IANA'nın text / * yerine application / * dağıtma olasılığının daha yüksek olduğunu söylemiş görünüyor. Daha fazla kaynak: Medya Türleri Yorum İsteği 4627 bluesmoon: JSON'un bir türü var | JSON için: İçerik Türü: uygulama / json JSON-P için: İçerik Türü: uygulama / javascript | Elbette JSON için doğru MIME medya türü application / json'dur, ancak uygulamanızda ne tür verilerin beklendiğini anlamak gerekir. Örneğin, Ext GWT kullanıyorum ve sunucu yanıtı text / html olarak gitmeli ancak JSON verilerini içeriyor. İstemci tarafı, Ext GWT form dinleyicisi uploadForm.getForm (). addListener (yeni FormListenerAdapter () { @Override public void onActionFailed (Form formu, int httpStatus, String responseText) { MessageBox.alert ("Hata"); } @Override public void onActionComplete (Form formu, int httpStatus, String responseText) { MessageBox.alert ("Başarılı"); } }); Application / json yanıt türünün kullanılması durumunda, tarayıcı dosyayı kaydetmemi öneriyor. Spring MVC kullanarak sunucu tarafı kaynak kod parçacığı yeni AbstractUrlBasedView () döndür { @SuppressWarnings ("kontrol edilmemiş") @Override korumalı void renderMergedOutputModel (Harita modeli, HttpServletRequest isteği, HttpServletResponse yanıtı) İstisna atar { response.setContentType ("text / html"); response.getWriter (). write (json); } }; | JSON: Yanıt, URL'de iletilen sorgu parametrelerine göre dinamik olarak üretilen verilerdir. Misal: {"Ad": "Foo", "Kimlik": 1234, "Sıra": 7} İçerik Türü: uygulama / json JSON-P: JSON ile doldurma. Yanıt, etrafına sarılmış bir işlev çağrısıyla JSON verileridir. Misal: functionCall ({"Ad": "Foo", "Kimlik": 1234, "Sıra": 7}); İçerik Türü: uygulama / javascript | Ubuntu veya Debian kullanıyorsanız ve .json dosyalarını Apache üzerinden sunuyorsanız, dosyalara doğru içerik türünde hizmet vermek isteyebilirsiniz. Bunu öncelikle JSONView Firefox eklentisini kullanmak istediğim için yapıyorum Apache modülü mod_mime bunu kolayca yapmanıza yardımcı olacaktır. Ancak, Ubuntu ile /etc/mime.types dosyasını düzenlemeniz ve satırı eklemeniz gerekir uygulama / json json Ardından Apache'yi yeniden başlatın: sudo hizmeti apache2 yeniden başlatma | İstemci tarafından ASP.NET Web Hizmetlerini çağırıyorsanız, çalışması için application / json kullanmanız gerekir. Bunun jQuery ve Ext çerçeveleri için aynı olduğuna inanıyorum. | JSON için doğru içerik türü, JSONP KULLANMADIĞINIZDIR. | Hiç şüphe yok ki application / json bir JSON yanıtı için en iyi MIME türüdür. Ancak bazı sıkıştırma sorunları nedeniyle application / x-javascript kullanmak zorunda kaldığım bazı deneyimlerim oldu. Barındırma ortamım, GoDaddy ile paylaşılıyor. Sunucu yapılandırmalarını değiştirmeme izin vermiyorlar. Yanıtları sıkıştırmak için web.config dosyama aşağıdaki kodu ekledim.<şema adı = "gzip" dll = "% Windir% \ system32 \ inetsrv \ gzip.dll" /> Bunu kullanarak, .aspx sayfaları g-zip ile sıkıştırıldı, ancak JSON yanıtları sıkıştırılmadı. ekledim statik ve dinamik tipler bölümlerinde. Ancak bu, JSON yanıtlarını hiç sıkıştırmaz. Ondan sonra bu yeni eklenen türü kaldırdım ve ekledim hem statik hem de dinamik tür bölümlerinde ve yanıt türünü değiştirdi .ashx (zaman uyumsuz işleyici) için application / x-javascript Ve şimdi JSON yanıtlarımın g-zip ile sıkıştırıldığını buldum. Bu yüzden şahsen kullanmanızı tavsiye ederim application / x-javascript yalnızca JSON yanıtlarınızı paylaşılan bir barındırma ortamında sıkıştırmak istiyorsanız. Çünkü paylaşılan barındırmada, IIS'yi değiştirmenize izin vermezlerkonfigürasyonlar. | Yalnızca MIME türü olarak application / json kullanırken aşağıdakilere sahibim (Kasım 2011 itibarıyla Chrome'un en son sürümleri, Firebug ile Firefox): JSON sunucudan yüklendiğinde Chrome'dan artık uyarı yok. Firebug, size JSON verilerini gösteren bir sekme ekleyecek biçimlendirilmiş. MIME türü farklıysa, yalnızca şu şekilde görünecektir: 'Yanıt içeriği'. | Her şey içerik türü application / json için çalışmaz. Dosya yüklemek için Ext JS formunu kullanıyorsanız, sunucu yanıtının